home *** CD-ROM | disk | FTP | other *** search
/ Directorty Opus 5 - Magellan 2 / Opus 5 - Magellan 2.iso / Archiv / CDDAOpus.lha / ListCDDA.rexx < prev    next >
OS/2 REXX Batch file  |  1995-04-03  |  6KB  |  226 lines

  1. /*rx
  2.  *
  3.  * ListCDDA.rexx - List and display an CDDA disk in a DOpus window
  4.  *
  5.  * Based on ListLHA.rexx by Geoff Seeley
  6.  * 
  7.  * $VER: ListCDDA 40.1 (26/12/94) by Laurie Lee
  8.  *
  9.  * Usage: ARexx command ListCDDA.rexx (from DOpus)
  10.  *
  11.  */
  12.  
  13. /*---------------NO USER SERVICABLE PARTS BELOW :-)----------------------------*/
  14.  
  15. /* misc. variables */
  16.  
  17. DOpusPort   = 'DOPUS.1'
  18. HandlerPort = 'CDDALIST.1'
  19.  
  20.  
  21. userdata     = '  0'      /* default      */
  22. fgpen        = '  1'      /* palette 1    */
  23. bgpen        = '  0'      /* palette 2    */
  24. selectable   = ' 1'       /* can select   */
  25. unselectable = ' 0'       /* can't select */
  26. show         = ' 0'       /* update win   */
  27. before       = ' -1'      /* add to end   */
  28.  
  29. if ~show(l,"rexxsupport.library") then        
  30.     call addlib("rexxsupport.library",0,-30,0)
  31.  
  32. /* make sure we've got somebody to talk to... */
  33.  
  34. if showlist('Ports', DOpusPort) = 0 then do
  35.    say 'Directory Opus Arexx port not found. Aborting.'
  36.    call CleanUp
  37. end
  38. else do
  39.  
  40.    /* make sure DOpus is listening to us... */
  41.  
  42.    address 'DOPUS.1'
  43.    options results
  44.  
  45.    /* get some information from DOpus */
  46.    Status 3
  47.    CurrentWindow = Result
  48.  
  49.    Status 14 CurrentWindow
  50.    CDDAFileName = Result
  51.  
  52. end
  53.  
  54. /* setup DOpus window and tell user what's happening */
  55.  
  56. ClearWin CurrentWindow
  57.  
  58. Busy on
  59.  
  60. TopText "Getting List of Tracks(s) From CD. Please Wait..."
  61.  
  62. /* parse the list of CDDA files */
  63.  
  64. TopText "Parsing File(s). Please Wait..."
  65.  
  66. call ParseCDDAList
  67.  
  68. 'DisplayDir -1'
  69.  
  70. /* if handler is running, attach a custom handler to the window */
  71.  
  72. if show('p', HandlerPort) then 
  73.    'AddCustHandler '||HandlerPort||' -1'
  74.  
  75. /* That's all folks... */
  76.  
  77. TopText "OK"
  78.  
  79. Busy off
  80.  
  81. call CleanUp
  82.  
  83. exit
  84.  
  85. /*---------------------------------------------------------------------------*/
  86.  
  87. ParseCDDAList: /* open the listing file, and parse it */
  88.  
  89.  
  90.   address YACDP
  91.  
  92.   'GETVAR MAXTRACK'
  93.  
  94.   res=RC
  95.  
  96.   select
  97.     when res = 0 then do
  98.   
  99.       address YACDP
  100.  
  101.       'GETVAR CDNAME'
  102.       'GETVAR BY'
  103.       address DOPUS.1
  104.  
  105.       TitleEntry = "'CD Title'" || userdata || fgpen || bgpen || unselectable || show || before 
  106.       AddCustEntry TitleEntry
  107.       TitleEntry = "" || userdata || fgpen || bgpen || unselectable || show || before 
  108.       AddCustEntry TitleEntry
  109.       TitleEntry = Quote('  '||CDNAME) || userdata || fgpen || bgpen || unselectable || show || before 
  110.       AddCustEntry TitleEntry
  111.       SetWinTitle Quote(CDNAME)
  112.       TitleEntry = "'  By'" || userdata || fgpen || bgpen || unselectable || show || before 
  113.       AddCustEntry TitleEntry
  114.       TitleEntry = Quote('  '||BY) || userdata || fgpen || bgpen || unselectable || show || before 
  115.       AddCustEntry TitleEntry
  116.       TitleEntry = "" || userdata || fgpen || bgpen || unselectable || show || before 
  117.       AddCustEntry TitleEntry
  118.       TitleEntry = "" || userdata || fgpen || bgpen || unselectable || show || before 
  119.       AddCustEntry TitleEntry
  120.  
  121.  
  122.       TitleEntry = "'Track  Name                 Length'" || userdata || fgpen || bgpen || unselectable || show || before 
  123.       AddCustEntry TitleEntry
  124.       TitleEntry = "" || userdata || fgpen || bgpen || unselectable || show || before 
  125.       AddCustEntry TitleEntry
  126.  
  127.  
  128.  
  129.       do i=1 to MAXTRACK
  130.         address YACDP
  131.  
  132.         'GETVAR SONGNAME NUM='i
  133.  
  134.         'GETVAR TRACKLEN NUM='i
  135.  
  136.         mytime=TRACKLEN/75
  137.         minute=mytime%60
  138.         seconds=mytime//60
  139.  
  140.         if POS('.',seconds) > 0 then do
  141.           seconds=left(seconds,POS('.',seconds)-1)
  142.         end
  143.  
  144.         mytime = minute || 'm' || ' ' || seconds || 's'
  145.  
  146.         NEWSONGNAME=OVERLAY(SONGNAME,' ',1,20)
  147.  
  148.         address DOPUS.1
  149.   
  150.         SELECT
  151.           when i<=9 then do
  152.             newname = Quote(i || '      ' || NEWSONGNAME || ' (' || mytime || ')')
  153.           end
  154.  
  155.           when i>9 & i <100 then do
  156.             newname = Quote(i || '     ' || NEWSONGNAME || ' (' || mytime || ')')
  157.           end
  158.  
  159.           otherwise do
  160.             newname = Quote(i || '    ' || NEWSONGNAME || ' (' || mytime || ')')
  161.           end
  162.  
  163.         end
  164.         
  165.         TitleEntry =  newname || userdata || fgpen || bgpen || selectable || show || before 
  166.         AddCustEntry TitleEntry
  167.  
  168.       end
  169.  
  170.       address DOPUS.1
  171.  
  172.       TitleEntry = "" || userdata || fgpen || bgpen || unselectable || show || before 
  173.       AddCustEntry TitleEntry
  174.       TitleEntry = "'CD Controls'" || userdata || fgpen || bgpen || unselectable || show || before 
  175.       AddCustEntry TitleEntry
  176.       TitleEntry = "" || userdata || fgpen || bgpen || unselectable || show || before 
  177.       AddCustEntry TitleEntry
  178.       TitleEntry = "Eject" || userdata || fgpen || bgpen || selectable || show || before 
  179.       AddCustEntry TitleEntry
  180.       TitleEntry = "Stop" || userdata || fgpen || bgpen || selectable || show || before 
  181.       AddCustEntry TitleEntry
  182.       TitleEntry = "Next" || userdata || fgpen || bgpen || selectable || show || before 
  183.       AddCustEntry TitleEntry
  184.       TitleEntry = "Previous" || userdata || fgpen || bgpen || selectable || show || before 
  185.       AddCustEntry TitleEntry
  186.  
  187.     end
  188.     when res = 10 then do
  189.       'GETVAR STATUS'
  190.       select
  191.         when STATUS =1 then do
  192.           address DOPUS.1
  193.           TitleEntry = "'No CD inserted'" || userdata || fgpen || bgpen || unselectable || show || before 
  194.           AddCustEntry TitleEntry
  195.         end
  196.         when STATUS=2 then do
  197.           address DOPUS.1
  198.           TitleEntry = "'Data Only CD inserted'" || userdata || fgpen || bgpen || unselectable || show || before 
  199.           AddCustEntry TitleEntry
  200.         end  
  201.         otherwise do
  202.           nop
  203.         end
  204.       end       
  205.     end
  206.     otherwise do
  207.       nop
  208.     end
  209.   end
  210. return
  211.  
  212.  
  213. Quote: procedure /* add quotes to string */
  214.  
  215.    parse arg string
  216.  
  217. return '"'||string||'"'
  218.  
  219. CleanUp: /* Remove any files and exit */
  220.  
  221.    Busy off
  222.    exit
  223.  
  224. return
  225.  
  226.